This is our group’s project page for the topic on Geographically Weighted Regression
packages = c('sf', 'tidyverse', 'readxl', 'tmap', 'raster', 'knitr', 'dplyr', 'olsrr','GWmodel','corrplot','ggpubr', 'spdep')
for (p in packages){
if(!require(p, character.only = T)){
install.packages(p)
}
library(p,character.only = T)
}
Meninggal function
unique_column_data_meninggal <- function(data) {
thedata <- read_xlsx(data, sheet = "data", .name_repair = "minimal")
names(thedata) <- make.unique(names(thedata))
data_withmonyear <- thedata %>%
mutate(thedata, Month = str_sub(data, 49, 51)) %>%
mutate(thedata, Year = str_sub(data, -22, -19)) %>%
mutate(thedata, Month_Year = paste(str_sub(data, 49, 51), str_sub(data, -22, -19), sep = "_", collapse = NULL))
extracted_data <- dplyr::select(data_withmonyear, `ID_KEL`, `Nama_provinsi`, `nama_kota`, `nama_kecamatan`, `nama_kelurahan`, `POSITIF`, `Meninggal.1`, `Month`, `Year`, `Month_Year`) %>%
rename(`Meninggal` = `Meninggal.1`) %>%
drop_na()
return(extracted_data)
}
LOAD MENINGGAL DATA
oct21 <- unique_column_data_meninggal("data/aspatial/Standar Kelurahan Data Corona (31 Oktober 2021 Pukul 10.00).xlsx")
geospatial
dkijkt_sf = st_read(dsn = "data/geospatial", layer = "BATAS_DESA_DESEMBER_2019_DUKCAPIL_DKI_JAKARTA")
Reading layer `BATAS_DESA_DESEMBER_2019_DUKCAPIL_DKI_JAKARTA' from data source `C:\JunLonggggg\IS415\IS415_project\data\Geospatial'
using driver `ESRI Shapefile'
Simple feature collection with 269 features and 161 fields
Geometry type: MULTIPOLYGON
Dimension: XY
Bounding box: xmin: 106.3831 ymin: -6.370815 xmax: 106.9728 ymax: -5.184322
Geodetic CRS: WGS 84
st_crs(dkijkt_sf)
Coordinate Reference System:
User input: WGS 84
wkt:
GEOGCRS["WGS 84",
DATUM["World Geodetic System 1984",
ELLIPSOID["WGS 84",6378137,298.257223563,
LENGTHUNIT["metre",1]]],
PRIMEM["Greenwich",0,
ANGLEUNIT["degree",0.0174532925199433]],
CS[ellipsoidal,2],
AXIS["latitude",north,
ORDER[1],
ANGLEUNIT["degree",0.0174532925199433]],
AXIS["longitude",east,
ORDER[2],
ANGLEUNIT["degree",0.0174532925199433]],
ID["EPSG",4326]]
dkijkt_sf23845 <- st_transform(dkijkt_sf, crs = 23845)
dkijkt_sf23845_main1 <- filter(dkijkt_sf23845, KAB_KOTA != "KEPULAUAN SERIBU")
dkijkt_sf23845_main <- dkijkt_sf23845_main1[1:9]
dkijkt_sf23845_main
Simple feature collection with 261 features and 9 fields
Geometry type: MULTIPOLYGON
Dimension: XY
Bounding box: xmin: -3644275 ymin: 663887.8 xmax: -3606237 ymax: 701380.1
Projected CRS: DGN95 / Indonesia TM-3 zone 54.1
First 10 features:
OBJECT_ID KODE_DESA DESA KODE PROVINSI
1 25477 3173031006 KEAGUNGAN 317303 DKI JAKARTA
2 25478 3173031007 GLODOK 317303 DKI JAKARTA
3 25397 3171031003 HARAPAN MULIA 317103 DKI JAKARTA
4 25400 3171031006 CEMPAKA BARU 317103 DKI JAKARTA
5 25390 3171021001 PASAR BARU 317102 DKI JAKARTA
6 25391 3171021002 KARANG ANYAR 317102 DKI JAKARTA
7 25394 3171021005 MANGGA DUA SELATAN 317102 DKI JAKARTA
8 25386 3171011003 PETOJO UTARA 317101 DKI JAKARTA
9 25403 3171041001 SENEN 317104 DKI JAKARTA
10 25408 3171041006 BUNGUR 317104 DKI JAKARTA
KAB_KOTA KECAMATAN DESA_KELUR JUMLAH_PEN
1 JAKARTA BARAT TAMAN SARI KEAGUNGAN 21609
2 JAKARTA BARAT TAMAN SARI GLODOK 9069
3 JAKARTA PUSAT KEMAYORAN HARAPAN MULIA 29085
4 JAKARTA PUSAT KEMAYORAN CEMPAKA BARU 41913
5 JAKARTA PUSAT SAWAH BESAR PASAR BARU 15793
6 JAKARTA PUSAT SAWAH BESAR KARANG ANYAR 33383
7 JAKARTA PUSAT SAWAH BESAR MANGGA DUA SELATAN 35906
8 JAKARTA PUSAT GAMBIR PETOJO UTARA 21828
9 JAKARTA PUSAT SENEN SENEN 8643
10 JAKARTA PUSAT SENEN BUNGUR 23001
geometry
1 MULTIPOLYGON (((-3626874 69...
2 MULTIPOLYGON (((-3627130 69...
3 MULTIPOLYGON (((-3621251 68...
4 MULTIPOLYGON (((-3620608 69...
5 MULTIPOLYGON (((-3624097 69...
6 MULTIPOLYGON (((-3624785 69...
7 MULTIPOLYGON (((-3624752 69...
8 MULTIPOLYGON (((-3626121 69...
9 MULTIPOLYGON (((-3623189 69...
10 MULTIPOLYGON (((-3622451 69...
dkijkt_covid <- left_join(dkijkt_sf23845_main, oct21, by = c("KODE_DESA" = "ID_KEL"))
dkijkt_ctrd <- st_centroid(dkijkt_covid, of_largest_polygon = TRUE)
# write.csv(dkijkt_ctrd, "data/dkijkt_ctrd.csv", row.names = FALSE)
# st_write(dkijkt_ctrd, "data/dkijkt_ctrd_xy.csv", layer_options = "GEOMETRY=AS_XY")
dkijkt_covid_testing <- read_csv("data/dkijkt_ctrd.csv")
dkijkt_covid_testing <- read_csv("data/dkijkt_ctrd_xy.csv")
dkijkt_covid_testing1 <- st_as_sf(dkijkt_covid_testing,
coords = c("X",
"Y"),
crs=23845)
tmap_mode("view")
tm_shape(dkijkt_covid_testing1)+
tm_dots()
tmap_mode("plot")
pointsofint_sf = st_read(dsn = "data/points_of_interests", layer = "hotosm_idn_jakarta_points_of_interest_points")
Reading layer `hotosm_idn_jakarta_points_of_interest_points' from data source `C:\JunLonggggg\IS415\IS415_project\data\points_of_interests'
using driver `ESRI Shapefile'
Simple feature collection with 14308 features and 14 fields
Geometry type: POINT
Dimension: XY
Bounding box: xmin: 106.4603 ymin: -6.589763 xmax: 107.2299 ymax: -5.92723
Geodetic CRS: WGS 84
attraction <- pointsofint_sf %>% filter(tourism == "attraction")
dkijkt_covid_geo <- dkijkt_covid_testing1$geometry
dkijkt_covid1 <- st_coordinates(dkijkt_covid_geo)
dkijkt_covid2 <- dkijkt_covid1[,1:2]
attraction_df <- attraction$geometry
correctgeo <- st_as_sf(attraction_df, crs=4326) %>%
st_transform(crs = 23845)
attractiongeo <- st_coordinates(correctgeo)
dist_dkijkt_attraction <- spDists(dkijkt_covid2, attractiongeo, longlat=FALSE)
dist_dkijkt_attraction_df <- data.frame(dist_dkijkt_attraction)
dist_dkijkt_attractiont_min <- dist_dkijkt_attraction_df %>% rowwise() %>% mutate(Min = min(c_across(X1:X191)))
PROX_ATTRACTION <- dist_dkijkt_attractiont_min$Min/1000
dkijkt_covid_updated <- cbind(dkijkt_covid_testing1, PROX_ATTRACTION)
placeofworship <- pointsofint_sf %>% filter(amenity == "place_of_worship")
dkijkt_covid_geo <- dkijkt_covid_testing1$geometry
dkijkt_covid1 <- st_coordinates(dkijkt_covid_geo)
dkijkt_covid2 <- dkijkt_covid1[,1:2]
placeofworship_df <- placeofworship$geometry
correctgeo <- st_as_sf(placeofworship_df, crs=4326) %>%
st_transform(crs = 23845)
placeofworshipgeo <- st_coordinates(correctgeo)
dist_dkijkt_placeofworship <- spDists(dkijkt_covid2, placeofworshipgeo, longlat=FALSE)
dist_dkijkt_placeofworship_df <- data.frame(dist_dkijkt_placeofworship)
dist_dkijkt_placeofworship_min <- dist_dkijkt_placeofworship_df %>% rowwise() %>% mutate(Min = min(c_across(X1:X422)))
PROX_WORSHIP <- dist_dkijkt_placeofworship_min$Min/1000
dkijkt_covid_updated <- cbind(dkijkt_covid_updated, PROX_WORSHIP)
restaurant <- pointsofint_sf %>% filter(amenity == "restaurant")
dkijkt_covid_geo <- dkijkt_covid_testing1$geometry
dkijkt_covid1 <- st_coordinates(dkijkt_covid_geo)
dkijkt_covid2 <- dkijkt_covid1[,1:2]
restaurant_df <- restaurant$geometry
correctgeo <- st_as_sf(restaurant_df, crs=4326) %>%
st_transform(crs = 23845)
restaurantgeo <- st_coordinates(correctgeo)
dist_dkijkt_restaurant <- spDists(dkijkt_covid2, restaurantgeo, longlat=FALSE)
dist_dkijkt_restaurant_df <- data.frame(dist_dkijkt_restaurant)
dist_dkijkt_restaurant_min <- dist_dkijkt_restaurant_df %>% rowwise() %>% mutate(Min = min(c_across(X1:X1082)))
PROX_RESTAURANT <- dist_dkijkt_restaurant_min$Min/1000
dkijkt_covid_updated <- cbind(dkijkt_covid_updated, PROX_RESTAURANT)
mall <- pointsofint_sf %>% filter(shop == "mall")
dkijkt_covid_geo <- dkijkt_covid_testing1$geometry
dkijkt_covid1 <- st_coordinates(dkijkt_covid_geo)
dkijkt_covid2 <- dkijkt_covid1[,1:2]
mall_df <- mall$geometry
correctgeo <- st_as_sf(mall_df, crs=4326) %>%
st_transform(crs = 23845)
mallgeo <- st_coordinates(correctgeo)
dist_dkijkt_mall <- spDists(dkijkt_covid2, mallgeo, longlat=FALSE)
dist_dkijkt_mall_df <- data.frame(dist_dkijkt_mall)
dist_dkijkt_mall_min <- dist_dkijkt_mall_df %>% rowwise() %>% mutate(Min = min(c_across(X1:X95)))
PROX_MALL <- dist_dkijkt_mall_min$Min/1000
dkijkt_covid_updated <- cbind(dkijkt_covid_updated, PROX_MALL)
supermarket <- pointsofint_sf %>% filter(shop == "supermarket")
dkijkt_covid_geo <- dkijkt_covid_testing1$geometry
dkijkt_covid1 <- st_coordinates(dkijkt_covid_geo)
dkijkt_covid2 <- dkijkt_covid1[,1:2]
supermarket_df <- supermarket$geometry
correctgeo <- st_as_sf(supermarket_df, crs=4326) %>%
st_transform(crs = 23845)
supermarketgeo <- st_coordinates(correctgeo)
dist_dkijkt_supermarket <- spDists(dkijkt_covid2, supermarketgeo, longlat=FALSE)
dist_dkijkt_supermarket_df <- data.frame(dist_dkijkt_supermarket)
dist_dkijkt_supermarket_min <- dist_dkijkt_supermarket_df %>% rowwise() %>% mutate(Min = min(c_across(X1:X261)))
PROX_SUPERMARKET <- dist_dkijkt_supermarket_min$Min/1000
dkijkt_covid_updated <- cbind(dkijkt_covid_updated, PROX_SUPERMARKET)
convenience <- pointsofint_sf %>% filter(shop == "convenience")
dkijkt_covid_geo <- dkijkt_covid_testing1$geometry
dkijkt_covid1 <- st_coordinates(dkijkt_covid_geo)
dkijkt_covid2 <- dkijkt_covid1[,1:2]
convenience_df <- convenience$geometry
correctgeo <- st_as_sf(convenience_df, crs=4326) %>%
st_transform(crs = 23845)
conveniencegeo <- st_coordinates(correctgeo)
dist_dkijkt_convenience <- spDists(dkijkt_covid2, conveniencegeo, longlat=FALSE)
dist_dkijkt_convenience_df <- data.frame(dist_dkijkt_convenience)
dist_dkijkt_convenience_min <- dist_dkijkt_convenience_df %>% rowwise() %>% mutate(Min = min(c_across(X1:X848)))
PROX_CONVENIENCE <- dist_dkijkt_convenience_min$Min/1000
dkijkt_covid_updated <- cbind(dkijkt_covid_updated, PROX_CONVENIENCE)
education_sf = st_read(dsn = "data/education", layer = "hotosm_idn_jakarta_education_facilities_points")
Reading layer `hotosm_idn_jakarta_education_facilities_points' from data source `C:\JunLonggggg\IS415\IS415_project\data\education'
using driver `ESRI Shapefile'
Simple feature collection with 1149 features and 9 fields
Geometry type: POINT
Dimension: XY
Bounding box: xmin: 106.4604 ymin: -6.589763 xmax: 107.2294 ymax: -5.974051
Geodetic CRS: WGS 84
kindergartens <- education_sf %>% filter(amenity == "kindergarten")
dkijkt_covid_geo <- dkijkt_covid_testing1$geometry
dkijkt_covid1 <- st_coordinates(dkijkt_covid_geo)
dkijkt_covid2 <- dkijkt_covid1[,1:2]
kindergartens_df <- kindergartens$geometry
correctgeo <- st_as_sf(kindergartens_df, crs=4326) %>%
st_transform(crs = 23845)
kindergartensgeo <- st_coordinates(correctgeo)
dist_dkijkt_kindergartens <- spDists(dkijkt_covid2, kindergartensgeo, longlat=FALSE)
dist_dkijkt_kindergartens_df <- data.frame(dist_dkijkt_kindergartens)
dist_dkijkt_kindergartens_min <- dist_dkijkt_kindergartens_df %>% rowwise() %>% mutate(Min = min(c_across(X1:X443)))
PROX_KINDERGARTENS <- dist_dkijkt_kindergartens_min$Min/1000
dkijkt_covid_updated <- cbind(dkijkt_covid_updated, PROX_KINDERGARTENS)
school <- education_sf %>% filter(amenity == "school")
dkijkt_covid_geo <- dkijkt_covid_testing1$geometry
dkijkt_covid1 <- st_coordinates(dkijkt_covid_geo)
dkijkt_covid2 <- dkijkt_covid1[,1:2]
school_df <- school$geometry
correctgeo <- st_as_sf(school_df, crs=4326) %>%
st_transform(crs = 23845)
schoolgeo <- st_coordinates(correctgeo)
dist_dkijkt_school <- spDists(dkijkt_covid2, schoolgeo, longlat=FALSE)
dist_dkijkt_school_df <- data.frame(dist_dkijkt_school)
dist_dkijkt_school_min <- dist_dkijkt_school_df %>% rowwise() %>% mutate(Min = min(c_across(X1:X593)))
PROX_SCHOOL <- dist_dkijkt_school_min$Min/1000
dkijkt_covid_updated <- cbind(dkijkt_covid_updated, PROX_SCHOOL)
airport_sf = st_read(dsn = "data/airport", layer = "hotosm_idn_jakarta_airports_points")
Reading layer `hotosm_idn_jakarta_airports_points' from data source
`C:\JunLonggggg\IS415\IS415_project\data\airport'
using driver `ESRI Shapefile'
Simple feature collection with 177 features and 11 fields
Geometry type: POINT
Dimension: XY
Bounding box: xmin: 106.649 ymin: -6.554656 xmax: 107.1358 ymax: -6.113161
Geodetic CRS: WGS 84
airport_sf <- st_as_sf(airport_sf, crs=4326) %>%
st_transform(crs = 23845)
terminal <- airport_sf %>% filter(aeroway == "terminal")
dkijkt_covid_geo <- dkijkt_covid_testing1$geometry
dkijkt_covid1 <- st_coordinates(dkijkt_covid_geo)
dkijkt_covid2 <- dkijkt_covid1[,1:2]
terminal_df <- terminal$geometry
correctgeo <- st_as_sf(terminal_df, crs=23845)
terminalgeo <- st_coordinates(correctgeo)
dist_dkijkt_terminal <- spDists(dkijkt_covid2, terminalgeo, longlat=FALSE)
dist_dkijkt_terminal_df <- data.frame(dist_dkijkt_terminal)
dist_dkijkt_terminal_min <- dist_dkijkt_terminal_df %>% rowwise() %>% mutate(Min = min(c_across(X1:X8)))
PROX_TERMINAL <- dist_dkijkt_terminal_min$Min/1000
dkijkt_covid_updated <- cbind(dkijkt_covid_updated, PROX_TERMINAL)
healthcare_sf = st_read(dsn = "data/health_facilities", layer = "IDN_hospital_point")
Reading layer `IDN_hospital_point' from data source
`C:\JunLonggggg\IS415\IS415_project\data\health_facilities'
using driver `ESRI Shapefile'
Simple feature collection with 1616 features and 9 fields
Geometry type: POINT
Dimension: XY
Bounding box: xmin: 95.29627 ymin: -10.1843 xmax: 140.669 ymax: 5.893303
Geodetic CRS: WGS 84
healthcare <- st_transform(healthcare_sf, crs = 23845)
healthcare_dkijkt <- healthcare %>%
filter(Province == "DKI Jakarta") %>%
drop_na(District)
dkijkt_covid_geo <- dkijkt_covid_testing1$geometry
dkijkt_covid1 <- st_coordinates(dkijkt_covid_geo)
dkijkt_covid2 <- dkijkt_covid1[,1:2]
healthcare_dkijkt_df <- healthcare_dkijkt$geometry
correctgeo <- st_as_sf(healthcare_dkijkt_df, crs=23845)
healthcare_dkijktgeo <- st_coordinates(correctgeo)
dist_dkijkt_healthcare <- spDists(dkijkt_covid2, healthcare_dkijktgeo, longlat=FALSE)
dist_dkijkt_healthcare_df <- data.frame(dist_dkijkt_healthcare)
dist_dkijkt_healthcare_min <- dist_dkijkt_healthcare_df %>% rowwise() %>% mutate(Min = min(c_across(X1:X129)))
PROX_HEALTHCARE <- dist_dkijkt_healthcare_min$Min/1000
dkijkt_covid_updated <- cbind(dkijkt_covid_updated, PROX_HEALTHCARE)
railways_sf = st_read(dsn = "data/railways", layer = "hotosm_idn_jakarta_railways_polygons")
Reading layer `hotosm_idn_jakarta_railways_polygons' from data source
`C:\JunLonggggg\IS415\IS415_project\data\railways'
using driver `ESRI Shapefile'
Simple feature collection with 25 features and 9 fields
Geometry type: POLYGON
Dimension: XY
Bounding box: xmin: 106.6518 ymin: -6.530927 xmax: 107.0838 ymax: -6.118495
Geodetic CRS: WGS 84
railways <- st_transform(railways_sf, crs = 23845)
railways <- st_centroid(railways, of_largest_polygon = TRUE)
dkijkt_covid_geo <- dkijkt_covid_testing1$geometry
dkijkt_covid1 <- st_coordinates(dkijkt_covid_geo)
dkijkt_covid2 <- dkijkt_covid1[,1:2]
railways_df <- railways$geometry
correctgeo <- st_as_sf(railways_df, crs=23845)
railwaysgeo <- st_coordinates(correctgeo)
dist_dkijkt_railways <- spDists(dkijkt_covid2, railwaysgeo, longlat=FALSE)
dist_dkijkt_railways_df <- data.frame(dist_dkijkt_railways)
dist_dkijkt_railways_min <- dist_dkijkt_railways_df %>% rowwise() %>% mutate(Min = min(c_across(X1:X25)))
PROX_RAILWAYS <- dist_dkijkt_railways_min$Min/1000
dkijkt_covid_updated <- cbind(dkijkt_covid_updated, PROX_RAILWAYS)
# st_write(dkijkt_covid_updated, "data/dkijkt_covid_updated.csv", layer_options = "GEOMETRY=AS_XY")
dkijkt_covid_updated_xy <- read_csv("data/dkijkt_covid_updated.csv")
dkijkt_covid_updated_xy <- st_as_sf(dkijkt_covid_updated_xy,
coords = c("X",
"Y"),
crs=23845)
dkijkt_covid_updated_xy_df <- as.data.frame(dkijkt_covid_updated_xy)
colnames(dkijkt_covid_updated_xy_df)
[1] "OBJECT_ID" "KODE_DESA" "DESA"
[4] "KODE" "PROVINSI" "KAB_KOTA"
[7] "KECAMATAN" "DESA_KELUR" "JUMLAH_PEN"
[10] "Nama_provinsi" "nama_kota" "nama_kecamatan"
[13] "nama_kelurahan" "POSITIF" "Meninggal"
[16] "Month" "Year" "Month_Year"
[19] "PROX_ATTRACTION" "PROX_WORSHIP" "PROX_RESTAURANT"
[22] "PROX_MALL" "PROX_SUPERMARKET" "PROX_CONVENIENCE"
[25] "PROX_KINDERGARTENS" "PROX_SCHOOL" "PROX_TERMINAL"
[28] "PROX_HEALTHCARE" "PROX_RAILWAYS" "geometry"
library(corrplot)
corrplot(cor(dkijkt_covid_updated_xy_df[, c("POSITIF","JUMLAH_PEN","PROX_ATTRACTION","PROX_WORSHIP","PROX_RESTAURANT","PROX_MALL", "PROX_SUPERMARKET", "PROX_CONVENIENCE", "PROX_KINDERGARTENS", "PROX_SCHOOL", "PROX_TERMINAL", "PROX_HEALTHCARE", "PROX_RAILWAYS")]), diag = FALSE, order = "AOE",
tl.pos = "td", tl.cex = 0.7, number.cex=0.5, method = "number", type = "upper")

OTHERS
Population Counts (Unconstrained 2020, 1km resolution)
tmap_mode("view")
tm_shape(population2020_raster) +
tm_raster(palette = "Paired", alpha = 0.7) +
tm_basemap("OpenStreetMap")
tmap_mode("plot")
Total Density 2020 Unconstrained, Unadjusted, 1km
tmap_mode("view")
tm_shape(populationden2020_raster) +
tm_raster(palette = "Paired", alpha = 0.7) +
tm_basemap("OpenStreetMap")
tmap_mode("plot")
Birth 2015
tmap_mode("view")
tm_shape(birth_raster) +
tm_raster(palette = "Paired", alpha = 0.7) +
tm_basemap("OpenStreetMap")
tmap_mode("plot")
# colnames(pointsofint_sf)
# lengths(lapply(pointsofint_sf, unique))
# amenity_count = pointsofint_sf %>%
# group_by(amenity) %>%
# summarise(unique_elements = n_distinct(osm_id))
# amenity_count[order(amenity_count$unique_elements, decreasing = TRUE),] %>%
# slice_max(unique_elements,n= 11)
# shop_count = pointsofint_sf %>%
# group_by(shop) %>%
# summarise(unique_elements = n_distinct(osm_id))
# shop_count[order(shop_count$unique_elements, decreasing = TRUE),] %>%
# slice_max(unique_elements,n= 11)
head(dkijkt_covid_updated)
Simple feature collection with 6 features and 29 fields
Geometry type: POINT
Dimension: XY
Bounding box: xmin: -3627327 ymin: 689925 xmax: -3620624 ymax: 692881.1
Projected CRS: DGN95 / Indonesia TM-3 zone 54.1
OBJECT_ID KODE_DESA DESA KODE PROVINSI KAB_KOTA
1 25477 3173031006 KEAGUNGAN 317303 DKI JAKARTA JAKARTA BARAT
2 25478 3173031007 GLODOK 317303 DKI JAKARTA JAKARTA BARAT
3 25397 3171031003 HARAPAN MULIA 317103 DKI JAKARTA JAKARTA PUSAT
4 25400 3171031006 CEMPAKA BARU 317103 DKI JAKARTA JAKARTA PUSAT
5 25390 3171021001 PASAR BARU 317102 DKI JAKARTA JAKARTA PUSAT
6 25391 3171021002 KARANG ANYAR 317102 DKI JAKARTA JAKARTA PUSAT
KECAMATAN DESA_KELUR JUMLAH_PEN Nama_provinsi nama_kota
1 TAMAN SARI KEAGUNGAN 21609 DKI JAKARTA JAKARTA BARAT
2 TAMAN SARI GLODOK 9069 DKI JAKARTA JAKARTA BARAT
3 KEMAYORAN HARAPAN MULIA 29085 DKI JAKARTA JAKARTA PUSAT
4 KEMAYORAN CEMPAKA BARU 41913 DKI JAKARTA JAKARTA PUSAT
5 SAWAH BESAR PASAR BARU 15793 DKI JAKARTA JAKARTA PUSAT
6 SAWAH BESAR KARANG ANYAR 33383 DKI JAKARTA JAKARTA PUSAT
nama_kecamatan nama_kelurahan POSITIF Meninggal Month Year
1 TAMAN SARI KEAGUNGAN 1211 13 Okt 2021
2 TAMAN SARI GLODOK 806 18 Okt 2021
3 KEMAYORAN HARAPAN MULIA 1946 40 Okt 2021
4 KEMAYORAN CEMPAKA BARU 3020 66 Okt 2021
5 SAWAH BESAR PASAR BARU 1646 25 Okt 2021
6 SAWAH BESAR KARANG ANYAR 1916 37 Okt 2021
Month_Year PROX_ATTRACTION PROX_WORSHIP PROX_RESTAURANT PROX_MALL
1 Okt_2021 0.5382397 1.0503875 0.3455930 0.3720679
2 Okt_2021 0.4028975 0.3900658 0.2571720 1.0283792
3 Okt_2021 1.4805683 1.9609504 0.8832605 2.7081251
4 Okt_2021 1.7919830 2.8853745 1.0822044 1.8678660
5 Okt_2021 0.2111523 1.2702678 0.1208641 0.6715247
6 Okt_2021 0.6572624 0.4652704 0.5889096 1.0397008
PROX_SUPERMARKET PROX_CONVENIENCE PROX_KINDERGARTENS PROX_SCHOOL
1 0.6004212 0.3346377 0.17083869 0.6699810
2 0.4333037 0.1725408 0.18755985 1.1314969
3 1.3725264 0.5153894 0.08428513 2.0182440
4 1.8432536 1.1539973 0.27942934 2.5324664
5 2.1670189 0.3324289 0.26575738 0.3335861
6 0.7689729 0.3389033 0.46330566 1.0854266
PROX_TERMINAL PROX_HEALTHCARE PROX_RAILWAYS
1 20.74123 0.6385436 6.674379
2 20.50052 0.9529990 7.494826
3 26.56168 1.7264388 5.292908
4 27.38963 0.8940009 5.806548
5 23.68299 1.4461887 4.975860
6 22.72081 0.8049696 6.334747
geometry
1 POINT (-3627129 692083.5)
2 POINT (-3627327 692881.1)
3 POINT (-3621509 689925)
4 POINT (-3620624 690303.2)
5 POINT (-3624361 690316.3)
6 POINT (-3625164 691811.9)
Histogram for all proximity factors
prx_attraction = ggplot(data=dkijkt_covid_updated_xy_df, aes(x= `PROX_ATTRACTION`)) +
geom_histogram(bins=20, color="black", fill="light blue")
prx_worship = ggplot(data=dkijkt_covid_updated_xy_df, aes(x= `PROX_WORSHIP`)) +
geom_histogram(bins=20, color="black", fill="light blue")
prx_restaurant = ggplot(data=dkijkt_covid_updated_xy_df, aes(x= `PROX_RESTAURANT`)) +
geom_histogram(bins=20, color="black", fill="light blue")
prx_mall = ggplot(data=dkijkt_covid_updated_xy_df, aes(x= `PROX_MALL`)) +
geom_histogram(bins=20, color="black", fill="light blue")
prx_supermarket = ggplot(data=dkijkt_covid_updated_xy_df, aes(x= `PROX_SUPERMARKET`)) +
geom_histogram(bins=20, color="black", fill="light blue")
prx_convenience = ggplot(data=dkijkt_covid_updated_xy_df, aes(x= `PROX_CONVENIENCE`)) +
geom_histogram(bins=20, color="black", fill="light blue")
prx_kindergartens = ggplot(data=dkijkt_covid_updated_xy_df, aes(x= `PROX_KINDERGARTENS`)) +
geom_histogram(bins=20, color="black", fill="light blue")
prx_schools = ggplot(data=dkijkt_covid_updated_xy_df, aes(x= `PROX_SCHOOL`)) +
geom_histogram(bins=20, color="black", fill="light blue")
prx_terminal = ggplot(data=dkijkt_covid_updated_xy_df, aes(x= `PROX_TERMINAL`)) +
geom_histogram(bins=20, color="black", fill="light blue")
prx_healthcare = ggplot(data=dkijkt_covid_updated_xy_df, aes(x= `PROX_HEALTHCARE`)) +
geom_histogram(bins=20, color="black", fill="light blue")
prx_railways = ggplot(data=dkijkt_covid_updated_xy_df, aes(x= `PROX_RAILWAYS`)) +
geom_histogram(bins=20, color="black", fill="light blue")
ggarrange(prx_attraction, prx_worship, prx_restaurant, prx_mall, prx_supermarket, prx_convenience, prx_kindergartens, prx_schools, prx_terminal, prx_healthcare, prx_railways, ncol = 3, nrow = 4)
# ggarrange from ggpubr package
tm_shape(dkijkt_sf23845_main)+
tm_polygons()

create_map = function(df, vname, legtitle = NA,mtitle = NA){
tm_shape(df) +
tm_fill(vname,
style = "quantile",
palette = "Blues",
title = legtitle
)+
tm_layout(main.title = mtitle,
main.title.position = "center",
main.title.size = 0.8,
legend.outside = TRUE,
legend.position = c("right","bottom"),
frame = TRUE
)+
tm_borders(alpha = 0.5)+
tm_scale_bar(width = 0.15) +
tm_grid(lwd = 0.1, alpha = 0.2) +
tm_credits("Source: Open Data Covid-19 Provinsi DKI Jakarta. from Riwayat File Covid-19 DKI Jakarta",
position = c("left", "bottom"))
}
positives = create_map(dkijkt_covid, 'POSITIF', "Cumulative Postive Cases as at 31st October 2021")
positives

deaths = create_map(dkijkt_covid, 'Meninggal', "Cumulative Death Cases as at 31st October 2021")
deaths

tm_shape(dkijkt_sf23845_main)+
tm_polygons() +
tm_shape(dkijkt_covid) +
tm_dots(col = "POSITIF",
alpha = 0.6,
style="quantile",
size = 0.5) +
tm_view(set.zoom.limits = c(11,14))

tm_shape(dkijkt_sf23845_main)+
tm_polygons() +
tm_shape(dkijkt_covid) +
tm_dots(col = "Meninggal",
alpha = 0.6,
style="quantile",
size = 0.5) +
tm_view(set.zoom.limits = c(11,14))

dkijkt_covid_updated_xy_df.slr <- lm(formula=POSITIF ~ JUMLAH_PEN, data = dkijkt_covid_updated_xy_df)
summary(dkijkt_covid_updated_xy_df.slr)
Call:
lm(formula = POSITIF ~ JUMLAH_PEN, data = dkijkt_covid_updated_xy_df)
Residuals:
Min 1Q Median 3Q Max
-3083.59 -484.40 -72.76 500.80 3001.82
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 8.097e+02 9.403e+01 8.612 7.15e-16 ***
JUMLAH_PEN 4.624e-02 1.934e-03 23.904 < 2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 760.5 on 259 degrees of freedom
Multiple R-squared: 0.6881, Adjusted R-squared: 0.6869
F-statistic: 571.4 on 1 and 259 DF, p-value: < 2.2e-16
ggplot(data=dkijkt_covid_updated_xy_df,
aes(x=`JUMLAH_PEN`, y=`POSITIF`)) +
geom_point() +
geom_smooth(method = lm)

col = c("POSITIF","JUMLAH_PEN","PROX_ATTRACTION","PROX_WORSHIP","PROX_RESTAURANT","PROX_MALL", "PROX_SUPERMARKET", "PROX_CONVENIENCE", "PROX_KINDERGARTENS", "PROX_SCHOOL", "PROX_TERMINAL", "PROX_HEALTHCARE", "PROX_RAILWAYS")
col
[1] "POSITIF" "JUMLAH_PEN" "PROX_ATTRACTION"
[4] "PROX_WORSHIP" "PROX_RESTAURANT" "PROX_MALL"
[7] "PROX_SUPERMARKET" "PROX_CONVENIENCE" "PROX_KINDERGARTENS"
[10] "PROX_SCHOOL" "PROX_TERMINAL" "PROX_HEALTHCARE"
[13] "PROX_RAILWAYS"
dkijkt_covid_updated_xy.mlr = lm(formula = POSITIF ~ JUMLAH_PEN + PROX_ATTRACTION + PROX_WORSHIP + PROX_RESTAURANT + PROX_MALL + PROX_SUPERMARKET + PROX_CONVENIENCE + PROX_KINDERGARTENS + PROX_SCHOOL + PROX_TERMINAL + PROX_HEALTHCARE + PROX_RAILWAYS, data=dkijkt_covid_updated_xy)
summary(dkijkt_covid_updated_xy.mlr)
Call:
lm(formula = POSITIF ~ JUMLAH_PEN + PROX_ATTRACTION + PROX_WORSHIP +
PROX_RESTAURANT + PROX_MALL + PROX_SUPERMARKET + PROX_CONVENIENCE +
PROX_KINDERGARTENS + PROX_SCHOOL + PROX_TERMINAL + PROX_HEALTHCARE +
PROX_RAILWAYS, data = dkijkt_covid_updated_xy)
Residuals:
Min 1Q Median 3Q Max
-2870.72 -416.30 -55.31 405.69 3012.26
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -5.562e+01 2.147e+02 -0.259 0.79583
JUMLAH_PEN 4.946e-02 2.361e-03 20.953 < 2e-16 ***
PROX_ATTRACTION 7.069e+01 3.639e+01 1.943 0.05319 .
PROX_WORSHIP 8.631e+01 4.644e+01 1.858 0.06430 .
PROX_RESTAURANT -2.390e+02 7.340e+01 -3.256 0.00129 **
PROX_MALL -2.946e+01 3.768e+01 -0.782 0.43504
PROX_SUPERMARKET 2.873e+01 4.982e+01 0.577 0.56461
PROX_CONVENIENCE -3.194e+01 6.024e+01 -0.530 0.59647
PROX_KINDERGARTENS -5.914e+01 7.716e+01 -0.766 0.44412
PROX_SCHOOL 1.518e+01 5.720e+01 0.265 0.79088
PROX_TERMINAL 2.615e+01 7.912e+00 3.306 0.00109 **
PROX_HEALTHCARE -2.586e+01 5.506e+01 -0.470 0.63904
PROX_RAILWAYS 2.630e+01 1.487e+01 1.769 0.07820 .
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 718.1 on 248 degrees of freedom
Multiple R-squared: 0.7337, Adjusted R-squared: 0.7208
F-statistic: 56.94 on 12 and 248 DF, p-value: < 2.2e-16
dkijkt_covid_updated_xy.mlr1 = lm(formula = POSITIF ~ JUMLAH_PEN + PROX_RESTAURANT + PROX_TERMINAL, data=dkijkt_covid_updated_xy)
# summary(dkijkt_covid_updated_xy.mlr1)
ols_regress(dkijkt_covid_updated_xy.mlr1)
Model Summary
------------------------------------------------------------------
R 0.848 RMSE 723.912
R-Squared 0.720 Coef. Var 26.272
Adj. R-Squared 0.716 MSE 524049.126
Pred R-Squared 0.705 MAE 556.675
------------------------------------------------------------------
RMSE: Root Mean Square Error
MSE: Mean Square Error
MAE: Mean Absolute Error
ANOVA
-----------------------------------------------------------------------------
Sum of
Squares DF Mean Square F Sig.
-----------------------------------------------------------------------------
Regression 345557906.531 3 115185968.844 219.8 0.0000
Residual 134680625.408 257 524049.126
Total 480238531.939 260
-----------------------------------------------------------------------------
Parameter Estimates
-------------------------------------------------------------------------------------------------
model Beta Std. Error Std. Beta t Sig lower upper
-------------------------------------------------------------------------------------------------
(Intercept) -10.704 186.198 -0.057 0.954 -377.372 355.963
JUMLAH_PEN 0.051 0.002 0.910 22.585 0.000 0.046 0.055
PROX_RESTAURANT -208.429 56.519 -0.162 -3.688 0.000 -319.729 -97.130
PROX_TERMINAL 33.151 6.443 0.191 5.145 0.000 20.463 45.839
-------------------------------------------------------------------------------------------------
ols_vif_tol(dkijkt_covid_updated_xy.mlr1)
Variables Tolerance VIF
1 JUMLAH_PEN 0.6725599 1.486856
2 PROX_RESTAURANT 0.5659906 1.766814
3 PROX_TERMINAL 0.7955314 1.257021
ols_plot_resid_fit(dkijkt_covid_updated_xy.mlr1)

ols_plot_resid_hist(dkijkt_covid_updated_xy.mlr1)

ols_test_normality(dkijkt_covid_updated_xy.mlr1)
-----------------------------------------------
Test Statistic pvalue
-----------------------------------------------
Shapiro-Wilk 0.9769 3e-04
Kolmogorov-Smirnov 0.0752 0.1047
Cramer-von Mises 21.8659 0.0000
Anderson-Darling 1.6066 4e-04
-----------------------------------------------
mlr.output <- as.data.frame(dkijkt_covid_updated_xy.mlr1$residuals)
dkijkt_covid_updated_xy.res.sf <- cbind(dkijkt_covid_updated_xy, dkijkt_covid_updated_xy.mlr1$residuals) %>%
rename(`MLR_RES` = `dkijkt_covid_updated_xy.mlr1.residuals`)
dkijkt_covid_updated_xy.sp <- as_Spatial(dkijkt_covid_updated_xy.res.sf)
dkijkt_covid_updated_xy.sp
class : SpatialPointsDataFrame
features : 261
extent : -3642599, -3607447, 665443.3, 699342.5 (xmin, xmax, ymin, ymax)
crs : +proj=tmerc +lat_0=0 +lon_0=139.5 +k=0.9999 +x_0=200000 +y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs
variables : 30
names : OBJECT_ID, KODE_DESA, DESA, KODE, PROVINSI, KAB_KOTA, KECAMATAN, DESA_KELUR, JUMLAH_PEN, Nama_provinsi, nama_kota, nama_kecamatan, nama_kelurahan, POSITIF, Meninggal, ...
min values : 25384, 3171011001, ANCOL, 317101, DKI JAKARTA, JAKARTA BARAT, CAKUNG, ANCOL, 3088, DKI JAKARTA, JAKARTA BARAT, CAKUNG, ANCOL, 277, 2, ...
max values : 25644, 3175101008, WIJAYA KUSUMA, 317510, DKI JAKARTA, JAKARTA UTARA, TEBET, WIJAYA KUSUMA, 167523, DKI JAKARTA, JAKARTA UTARA, TEBET, WIJAYA KUSUMA, 6607, 169, ...
tmap_mode("view")
tm_shape(dkijkt_covid)+
tm_polygons(alpha = 0.4) +
tm_shape(dkijkt_covid_updated_xy.res.sf) +
tm_dots(col = "MLR_RES",
alpha = 0.6,
style="quantile") +
tm_view(set.zoom.limits = c(10,15))
tmap_mode("plot")
nb <- dnearneigh(coordinates(dkijkt_covid_updated_xy.sp), 0, 3500, longlat = FALSE)
summary(nb)
Neighbour list object:
Number of regions: 261
Number of nonzero links: 3810
Percentage nonzero weights: 5.592989
Average number of links: 14.5977
Link number distribution:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
4 4 11 14 13 12 13 16 16 13 8 7 2 8 9 7 9 3 9 3 5 8 8
24 25 26 27 28 29 30 31 32 33
9 10 7 4 7 9 4 4 3 2
4 least connected regions:
19 32 149 178 with 1 link
2 most connected regions:
8 120 with 33 links
nb_lw <- nb2listw(nb, style = 'W')
summary(nb_lw)
Characteristics of weights list object:
Neighbour list object:
Number of regions: 261
Number of nonzero links: 3810
Percentage nonzero weights: 5.592989
Average number of links: 14.5977
Link number distribution:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
4 4 11 14 13 12 13 16 16 13 8 7 2 8 9 7 9 3 9 3 5 8 8
24 25 26 27 28 29 30 31 32 33
9 10 7 4 7 9 4 4 3 2
4 least connected regions:
19 32 149 178 with 1 link
2 most connected regions:
8 120 with 33 links
Weights style: W
Weights constants summary:
n nn S0 S1 S2
W 261 68121 261 60.14567 1057.829
lm.morantest(dkijkt_covid_updated_xy.mlr1, nb_lw)
Global Moran I for regression residuals
data:
model: lm(formula = POSITIF ~ JUMLAH_PEN + PROX_RESTAURANT +
PROX_TERMINAL, data = dkijkt_covid_updated_xy)
weights: nb_lw
Moran I statistic standard deviate = 10.287, p-value < 2.2e-16
alternative hypothesis: greater
sample estimates:
Observed Moran I Expectation Variance
0.2809270492 -0.0104695219 0.0008024067
bw.fixed <- bw.gwr(formula = POSITIF ~ JUMLAH_PEN + PROX_RESTAURANT + PROX_TERMINAL, data=dkijkt_covid_updated_xy.sp, approach="CV", kernel="gaussian", adaptive=FALSE, longlat=FALSE)
Fixed bandwidth: 26585.08 CV score: 132406301
Fixed bandwidth: 16433.77 CV score: 123068992
Fixed bandwidth: 10159.91 CV score: 116106547
Fixed bandwidth: 6282.457 CV score: 115585107
Fixed bandwidth: 3886.057 CV score: 116144734
Fixed bandwidth: 7763.513 CV score: 115426837
Fixed bandwidth: 8678.856 CV score: 115508497
Fixed bandwidth: 7197.8 CV score: 115457910
Fixed bandwidth: 8113.143 CV score: 115435761
Fixed bandwidth: 7547.43 CV score: 115432835
Fixed bandwidth: 7897.06 CV score: 115427350
Fixed bandwidth: 7680.976 CV score: 115428175
Fixed bandwidth: 7814.523 CV score: 115426633
Fixed bandwidth: 7846.049 CV score: 115426751
Fixed bandwidth: 7795.039 CV score: 115426653
Fixed bandwidth: 7826.565 CV score: 115426655
Fixed bandwidth: 7807.081 CV score: 115426632
Fixed bandwidth: 7802.481 CV score: 115426637
Fixed bandwidth: 7809.924 CV score: 115426631
Fixed bandwidth: 7811.68 CV score: 115426631
Fixed bandwidth: 7808.838 CV score: 115426631
Fixed bandwidth: 7810.595 CV score: 115426631
Fixed bandwidth: 7811.009 CV score: 115426631
Fixed bandwidth: 7810.338 CV score: 115426631
Fixed bandwidth: 7810.753 CV score: 115426631
Fixed bandwidth: 7810.497 CV score: 115426631
Fixed bandwidth: 7810.436 CV score: 115426631
Fixed bandwidth: 7810.534 CV score: 115426631
Fixed bandwidth: 7810.474 CV score: 115426631
gwr.fixed <- gwr.basic(formula = POSITIF ~ JUMLAH_PEN + PROX_RESTAURANT + PROX_TERMINAL, data=dkijkt_covid_updated_xy.sp, bw=bw.fixed, kernel = 'gaussian', longlat = FALSE)
gwr.fixed
***********************************************************************
* Package GWmodel *
***********************************************************************
Program starts at: 2021-11-16 10:25:03
Call:
gwr.basic(formula = POSITIF ~ JUMLAH_PEN + PROX_RESTAURANT +
PROX_TERMINAL, data = dkijkt_covid_updated_xy.sp, bw = bw.fixed,
kernel = "gaussian", longlat = FALSE)
Dependent (y) variable: POSITIF
Independent variables: JUMLAH_PEN PROX_RESTAURANT PROX_TERMINAL
Number of data points: 261
***********************************************************************
* Results of Global Regression *
***********************************************************************
Call:
lm(formula = formula, data = data)
Residuals:
Min 1Q Median 3Q Max
-2785.66 -441.82 -80.32 416.29 3063.13
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -1.070e+01 1.862e+02 -0.057 0.954200
JUMLAH_PEN 5.071e-02 2.245e-03 22.585 < 2e-16 ***
PROX_RESTAURANT -2.084e+02 5.652e+01 -3.688 0.000276 ***
PROX_TERMINAL 3.315e+01 6.443e+00 5.145 5.31e-07 ***
---Significance stars
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 723.9 on 257 degrees of freedom
Multiple R-squared: 0.7196
Adjusted R-squared: 0.7163
F-statistic: 219.8 on 3 and 257 DF, p-value: < 2.2e-16
***Extra Diagnostic information
Residual sum of squares: 134680625
Sigma(hat): 721.1119
AIC: 4183.853
AICc: 4184.088
BIC: 3968.498
***********************************************************************
* Results of Geographically Weighted Regression *
***********************************************************************
*********************Model calibration information*********************
Kernel function: gaussian
Fixed bandwidth: 7810.474
Regression points: the same locations as observations are used.
Distance metric: Euclidean distance metric is used.
****************Summary of GWR coefficient estimates:******************
Min. 1st Qu. Median 3rd Qu.
Intercept -496.636248 -227.594285 -138.619288 -2.977636
JUMLAH_PEN 0.045267 0.051767 0.053604 0.054672
PROX_RESTAURANT -496.337257 -316.567146 -171.537750 -29.354871
PROX_TERMINAL 5.552540 27.082474 30.637925 34.620713
Max.
Intercept 951.1443
JUMLAH_PEN 0.0619
PROX_RESTAURANT 79.9372
PROX_TERMINAL 57.1337
************************Diagnostic information*************************
Number of data points: 261
Effective number of parameters (2trace(S) - trace(S'S)): 17.06064
Effective degrees of freedom (n-2trace(S) + trace(S'S)): 243.9394
AICc (GWR book, Fotheringham, et al. 2002, p. 61, eq 2.33): 4116.99
AIC (GWR book, Fotheringham, et al. 2002,GWR p. 96, eq. 4.22): 4100.681
BIC (GWR book, Fotheringham, et al. 2002,GWR p. 61, eq. 2.34): 3897.552
Residual sum of squares: 96928997
R-square value: 0.7981649
Adjusted R-square value: 0.7839908
***********************************************************************
Program stops at: 2021-11-16 10:25:03
Global adjusted r square: 0.7163 GWR adjusted r square: 0.7840
bw.adaptive <- bw.gwr(formula = POSITIF ~ JUMLAH_PEN + PROX_RESTAURANT + PROX_TERMINAL, data=dkijkt_covid_updated_xy.sp, approach="CV", kernel="gaussian",
adaptive=TRUE, longlat=FALSE)
Adaptive bandwidth: 168 CV score: 127081113
Adaptive bandwidth: 112 CV score: 122235579
Adaptive bandwidth: 75 CV score: 118408330
Adaptive bandwidth: 55 CV score: 116647483
Adaptive bandwidth: 39 CV score: 115449028
Adaptive bandwidth: 33 CV score: 114960467
Adaptive bandwidth: 25 CV score: 114908071
Adaptive bandwidth: 24 CV score: 114609045
Adaptive bandwidth: 19 CV score: 114667209
Adaptive bandwidth: 22 CV score: 114530547
Adaptive bandwidth: 26 CV score: 114945020
Adaptive bandwidth: 24 CV score: 114609045
Adaptive bandwidth: 25 CV score: 114908071
Adaptive bandwidth: 24 CV score: 114609045
Adaptive bandwidth: 24 CV score: 114609045
Adaptive bandwidth: 23 CV score: 114491783
Adaptive bandwidth: 21 CV score: 114577685
Adaptive bandwidth: 21 CV score: 114577685
Adaptive bandwidth: 20 CV score: 114690316
Adaptive bandwidth: 20 CV score: 114690316
Adaptive bandwidth: 19 CV score: 114667209
Adaptive bandwidth: 19 CV score: 114667209
Adaptive bandwidth: 18 CV score: 114440095
Adaptive bandwidth: 22 CV score: 114530547
Adaptive bandwidth: 22 CV score: 114530547
Adaptive bandwidth: 21 CV score: 114577685
Adaptive bandwidth: 21 CV score: 114577685
Adaptive bandwidth: 20 CV score: 114690316
Adaptive bandwidth: 20 CV score: 114690316
Adaptive bandwidth: 19 CV score: 114667209
Adaptive bandwidth: 19 CV score: 114667209
Adaptive bandwidth: 18 CV score: 114440095
Select bandwith of 18
gwr.adaptive <- gwr.basic(formula = POSITIF ~ JUMLAH_PEN + PROX_RESTAURANT + PROX_TERMINAL, data=dkijkt_covid_updated_xy.sp, bw=bw.adaptive, kernel = 'gaussian', adaptive=TRUE, longlat = FALSE)
gwr.adaptive
***********************************************************************
* Package GWmodel *
***********************************************************************
Program starts at: 2021-11-16 10:25:03
Call:
gwr.basic(formula = POSITIF ~ JUMLAH_PEN + PROX_RESTAURANT +
PROX_TERMINAL, data = dkijkt_covid_updated_xy.sp, bw = bw.adaptive,
kernel = "gaussian", adaptive = TRUE, longlat = FALSE)
Dependent (y) variable: POSITIF
Independent variables: JUMLAH_PEN PROX_RESTAURANT PROX_TERMINAL
Number of data points: 261
***********************************************************************
* Results of Global Regression *
***********************************************************************
Call:
lm(formula = formula, data = data)
Residuals:
Min 1Q Median 3Q Max
-2785.66 -441.82 -80.32 416.29 3063.13
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -1.070e+01 1.862e+02 -0.057 0.954200
JUMLAH_PEN 5.071e-02 2.245e-03 22.585 < 2e-16 ***
PROX_RESTAURANT -2.084e+02 5.652e+01 -3.688 0.000276 ***
PROX_TERMINAL 3.315e+01 6.443e+00 5.145 5.31e-07 ***
---Significance stars
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 723.9 on 257 degrees of freedom
Multiple R-squared: 0.7196
Adjusted R-squared: 0.7163
F-statistic: 219.8 on 3 and 257 DF, p-value: < 2.2e-16
***Extra Diagnostic information
Residual sum of squares: 134680625
Sigma(hat): 721.1119
AIC: 4183.853
AICc: 4184.088
BIC: 3968.498
***********************************************************************
* Results of Geographically Weighted Regression *
***********************************************************************
*********************Model calibration information*********************
Kernel function: gaussian
Adaptive bandwidth: 18 (number of nearest neighbours)
Regression points: the same locations as observations are used.
Distance metric: Euclidean distance metric is used.
****************Summary of GWR coefficient estimates:******************
Min. 1st Qu. Median 3rd Qu.
Intercept -1.9794e+03 -5.2107e+02 -2.6186e+02 2.0187e+02
JUMLAH_PEN 4.3357e-02 5.0092e-02 5.3951e-02 5.6788e-02
PROX_RESTAURANT -6.6351e+02 -2.5826e+02 -1.1235e+02 2.2107e+01
PROX_TERMINAL -6.0618e+01 1.9632e+01 3.2749e+01 4.6321e+01
Max.
Intercept 1714.9820
JUMLAH_PEN 0.0651
PROX_RESTAURANT 393.8354
PROX_TERMINAL 99.1859
************************Diagnostic information*************************
Number of data points: 261
Effective number of parameters (2trace(S) - trace(S'S)): 35.44168
Effective degrees of freedom (n-2trace(S) + trace(S'S)): 225.5583
AICc (GWR book, Fotheringham, et al. 2002, p. 61, eq 2.33): 4116.013
AIC (GWR book, Fotheringham, et al. 2002,GWR p. 96, eq. 4.22): 4082.45
BIC (GWR book, Fotheringham, et al. 2002,GWR p. 61, eq. 2.34): 3937.295
Residual sum of squares: 86096145
R-square value: 0.8207221
Adjusted R-square value: 0.792427
***********************************************************************
Program stops at: 2021-11-16 10:25:03
dkijkt_covid_updated_xy.adaptive <- st_as_sf(gwr.adaptive$SDF) %>%
st_transform(crs=23845)
dkijkt_covid_updated_xy.adaptive.svy21 <- st_transform(dkijkt_covid_updated_xy.adaptive, 23845)
dkijkt_covid_updated_xy.adaptive.svy21
Simple feature collection with 261 features and 18 fields
Geometry type: POINT
Dimension: XY
Bounding box: xmin: -3642599 ymin: 665443.3 xmax: -3607447 ymax: 699342.5
Projected CRS: DGN95 / Indonesia TM-3 zone 54.1
First 10 features:
Intercept JUMLAH_PEN PROX_RESTAURANT PROX_TERMINAL y yhat
1 -1144.883 0.05025544 66.10630 67.73917 1211 1368.9261
2 -1057.035 0.04989022 123.53061 62.75091 806 713.6140
3 -1624.827 0.06319143 -303.20579 82.90708 1946 2147.4371
4 -1278.906 0.06421312 -378.67323 70.74178 3020 2940.2480
5 -1123.809 0.05293092 50.91114 65.90108 1646 1279.0166
6 -1425.856 0.05098450 257.30637 77.88037 1916 2197.1946
7 -1728.106 0.04919500 393.83535 90.93856 1937 2286.2548
8 -330.068 0.05110000 30.93707 32.24424 1434 1482.0736
9 -1102.638 0.05461892 -147.15571 65.75262 982 966.0641
10 -1321.143 0.05921778 -182.57629 72.03046 1436 1761.5438
residual CV_Score Stud_residual Intercept_SE JUMLAH_PEN_SE
1 -157.92610 0 -0.26469295 1032.6646 0.006426165
2 92.38602 0 0.15905050 990.5857 0.005837407
3 -201.43711 0 -0.34005993 707.4829 0.005998712
4 79.75202 0 0.13481834 633.5744 0.005572424
5 366.98341 0 0.64033842 586.9564 0.005215731
6 -281.19459 0 -0.46986078 588.4961 0.004969396
7 -349.25482 0 -0.58690446 598.9546 0.005088091
8 -48.07357 0 -0.07970083 652.6614 0.005379907
9 15.93592 0 0.02831486 611.8777 0.006490386
10 -325.54384 0 -0.54233854 553.4667 0.005345573
PROX_RESTAURANT_SE PROX_TERMINAL_SE Intercept_TV JUMLAH_PEN_TV
1 382.7858 47.09575 -1.1086691 7.820440
2 372.0011 45.06369 -1.0670810 8.546642
3 260.1057 30.85449 -2.2966307 10.534168
4 221.4217 27.65698 -2.0185566 11.523373
5 273.1516 26.63019 -1.9146384 10.148323
6 266.2923 26.45327 -2.4228813 10.259698
7 281.8163 26.59172 -2.8852034 9.668657
8 287.2065 28.67235 -0.5057263 9.498306
9 286.6446 27.20571 -1.8020559 8.415358
10 247.0637 24.66286 -2.3870326 11.077910
PROX_RESTAURANT_TV PROX_TERMINAL_TV Local_R2
1 0.1726979 1.438329 0.8396321
2 0.3320705 1.392494 0.8371292
3 -1.1657022 2.687035 0.7355536
4 -1.7101901 2.557827 0.7153181
5 0.1863842 2.474676 0.8008013
6 0.9662555 2.944074 0.8098282
7 1.3974895 3.419807 0.7993530
8 0.1077171 1.124576 0.8379563
9 -0.5133735 2.416868 0.7979838
10 -0.7389848 2.920605 0.7627244
geometry
1 POINT (-3627129 692083.5)
2 POINT (-3627327 692881.1)
3 POINT (-3621509 689925)
4 POINT (-3620624 690303.2)
5 POINT (-3624361 690316.3)
6 POINT (-3625164 691811.9)
7 POINT (-3625381 693399.8)
8 POINT (-3626870 690234.1)
9 POINT (-3623604 689027)
10 POINT (-3622557 689713.1)
gwr.adaptive.output <- as.data.frame(gwr.adaptive$SDF)
dkijkt_covid_updated_xy.adaptive <- cbind(dkijkt_covid_updated_xy.res.sf, as.matrix(gwr.adaptive.output))
glimpse(dkijkt_covid_updated_xy.adaptive)
Rows: 261
Columns: 51
$ OBJECT_ID <dbl> 25477, 25478, 25397, 25400, 25390, 25391,~
$ KODE_DESA <dbl> 3173031006, 3173031007, 3171031003, 31710~
$ DESA <chr> "KEAGUNGAN", "GLODOK", "HARAPAN MULIA", "~
$ KODE <dbl> 317303, 317303, 317103, 317103, 317102, 3~
$ PROVINSI <chr> "DKI JAKARTA", "DKI JAKARTA", "DKI JAKART~
$ KAB_KOTA <chr> "JAKARTA BARAT", "JAKARTA BARAT", "JAKART~
$ KECAMATAN <chr> "TAMAN SARI", "TAMAN SARI", "KEMAYORAN", ~
$ DESA_KELUR <chr> "KEAGUNGAN", "GLODOK", "HARAPAN MULIA", "~
$ JUMLAH_PEN <dbl> 21609, 9069, 29085, 41913, 15793, 33383, ~
$ Nama_provinsi <chr> "DKI JAKARTA", "DKI JAKARTA", "DKI JAKART~
$ nama_kota <chr> "JAKARTA BARAT", "JAKARTA BARAT", "JAKART~
$ nama_kecamatan <chr> "TAMAN SARI", "TAMAN SARI", "KEMAYORAN", ~
$ nama_kelurahan <chr> "KEAGUNGAN", "GLODOK", "HARAPAN MULIA", "~
$ POSITIF <dbl> 1211, 806, 1946, 3020, 1646, 1916, 1937, ~
$ Meninggal <dbl> 13, 18, 40, 66, 25, 37, 36, 24, 16, 26, 5~
$ Month <chr> "Okt", "Okt", "Okt", "Okt", "Okt", "Okt",~
$ Year <dbl> 2021, 2021, 2021, 2021, 2021, 2021, 2021,~
$ Month_Year <chr> "Okt_2021", "Okt_2021", "Okt_2021", "Okt_~
$ PROX_ATTRACTION <dbl> 0.5382397, 0.4028975, 1.4805683, 1.791983~
$ PROX_WORSHIP <dbl> 1.050387498, 0.390065771, 1.960950443, 2.~
$ PROX_RESTAURANT <dbl> 0.3455930, 0.2571720, 0.8832605, 1.082204~
$ PROX_MALL <dbl> 0.3720679, 1.0283792, 2.7081251, 1.867866~
$ PROX_SUPERMARKET <dbl> 0.6004212, 0.4333037, 1.3725264, 1.843253~
$ PROX_CONVENIENCE <dbl> 0.3346377, 0.1725408, 0.5153894, 1.153997~
$ PROX_KINDERGARTENS <dbl> 0.17083869, 0.18755985, 0.08428513, 0.279~
$ PROX_SCHOOL <dbl> 0.6699810, 1.1314969, 2.0182440, 2.532466~
$ PROX_TERMINAL <dbl> 20.74123, 20.50052, 26.56168, 27.38963, 2~
$ PROX_HEALTHCARE <dbl> 0.63854364, 0.95299899, 1.72643881, 0.894~
$ PROX_RAILWAYS <dbl> 6.6743792, 7.4948262, 5.2929077, 5.806548~
$ MLR_RES <dbl> -489.57850, -269.16770, -214.54982, 223.0~
$ Intercept <dbl> -1144.88327, -1057.03515, -1624.82697, -1~
$ JUMLAH_PEN.1 <dbl> 0.05025544, 0.04989022, 0.06319143, 0.064~
$ PROX_RESTAURANT.1 <dbl> 66.10630, 123.53061, -303.20579, -378.673~
$ PROX_TERMINAL.1 <dbl> 67.739168, 62.750911, 82.907078, 70.74178~
$ y <dbl> 1211, 806, 1946, 3020, 1646, 1916, 1937, ~
$ yhat <dbl> 1368.9261, 713.6140, 2147.4371, 2940.2480~
$ residual <dbl> -157.92610, 92.38602, -201.43711, 79.7520~
$ CV_Score <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,~
$ Stud_residual <dbl> -0.26469295, 0.15905050, -0.34005993, 0.1~
$ Intercept_SE <dbl> 1032.6646, 990.5857, 707.4829, 633.5744, ~
$ JUMLAH_PEN_SE <dbl> 0.006426165, 0.005837407, 0.005998712, 0.~
$ PROX_RESTAURANT_SE <dbl> 382.78576, 372.00111, 260.10571, 221.4217~
$ PROX_TERMINAL_SE <dbl> 47.09575, 45.06369, 30.85449, 27.65698, 2~
$ Intercept_TV <dbl> -1.1086691, -1.0670810, -2.2966307, -2.01~
$ JUMLAH_PEN_TV <dbl> 7.820440, 8.546642, 10.534168, 11.523373,~
$ PROX_RESTAURANT_TV <dbl> 0.1726979, 0.3320705, -1.1657022, -1.7101~
$ PROX_TERMINAL_TV <dbl> 1.4383286, 1.3924938, 2.6870347, 2.557827~
$ Local_R2 <dbl> 0.8396321, 0.8371292, 0.7355536, 0.715318~
$ coords.x1 <dbl> -3627129, -3627327, -3621509, -3620624, -~
$ coords.x2 <dbl> 692083.5, 692881.1, 689925.0, 690303.2, 6~
$ geometry <POINT [m]> POINT (-3627129 692083.5), POINT (-~
summary(gwr.adaptive$SDF$yhat)
Min. 1st Qu. Median Mean 3rd Qu. Max.
507.2 1879.1 2703.2 2746.0 3352.1 7967.5
tmap_mode("view")
tm_shape(dkijkt_covid)+
tm_polygons(alpha = 0.1) +
tm_shape(dkijkt_covid_updated_xy.adaptive) +
tm_dots(col = "Local_R2",
border.col = "gray60",
border.lwd = 1) +
tm_view(set.zoom.limits = c(10,15))
tmap_mode("plot")
tm_shape(dkijkt_covid[dkijkt_covid$KECAMATAN=="CENGKARENG", ])+
tm_polygons(alpha = 0.1) +
tm_shape(dkijkt_covid_updated_xy.adaptive) +
tm_dots(col = "Local_R2",
border.col = "gray60",
border.lwd = 1,
size= 1.5) +
tm_view(set.zoom.limits = c(10,15))
